import dataPreferences from '@ohos.data.preferences' // 导入首选项
import { AgUser } from '../services'
import { Constants } from '.'
import { QATopModel } from '../models'

export class AppStorageKit {
  static async SetLoginUser<T>(data: T, context) {
    // 保存数据到内存中
    AppStorage.SetOrCreate<T>('user', data)

    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE)
    store.put(Constants.LOGIN_USER, JSON.stringify(data))
    await store.flush() // 将数据保存到磁盘
  }

  static async GetLoginUser<T>(context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE)
    let res = await store.get(Constants.LOGIN_USER, "{}")
    return JSON.parse(res.toString()) as AgUser
  }

  static async DelLoginUser<T>(context) {
    AppStorage.Delete('user')

    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE)
    await store.delete(Constants.LOGIN_USER)
    await store.flush()
  }

  // 根据项目情况，陆续添加对应的首选项(磁盘持久化)
  static async SetRanking<T>(data: T, context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE)
    store.put("ranking", JSON.stringify(data))
    await store.flush() // 将数据保存到磁盘
  }

  // 获取到前3名的数据
  static async GetRank<T>(context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE)
    let res = await store.get("ranking", "{}")
    return JSON.parse(res.toString()) as QATopModel[]
  }
}